package com.cykj.page06;

import java.lang.reflect.Method;

/**
 * @BelongsProject: hand-tomcat
 * @BelongsPackage: com.cykj.page06
 * @Author: 阿隆
 * @CreateTime: 2025-11-01 10:12
 * @Description: TODO
 * @Version: 1.0
 */
public class StudentTest {
    public static void main(String[] args) {
        /*
         通过放射解析:
        * 1.获取Student 的类对象
        * 2.获取Student里面所有的方法
        * 3.判断哪个方法上面有携带 MyTest注解
        * 4.如果有携带这个注解 我就执行这个方法
        * */


        try {
            //1.获取Student 的类对象
            Class<?> cls = Class.forName("com.cykj.page06.Student");

            Student stu = (Student)cls.newInstance();

            //2.获取Student里面所有的方法
            Method[] declaredMethods = cls.getDeclaredMethods();

            //3.遍历数组判断有没有携带MyTest注解
            for (Method item : declaredMethods) {
                //判断这个方法对象有没有添加注解
                if (item.isAnnotationPresent(MyTest.class)){
                    //获取注解
                    MyTest annotation = item.getAnnotation(MyTest.class);
                    //获取注解的值
                    System.out.println(annotation.value());
                    //执行这个方法
                    item.invoke(stu);
                }
            }

        } catch (Exception e) {
            throw new RuntimeException(e);
        }

    }
}
